package lightsync;



public class VolatileVisibilityDemo {

    // running不是一个对象，只是一个常量，所以不能被线程共享，每个线程会复制到自己的栈中，所以也就是线程独立的
    // 那么为什么一个线程修改了，其他却能线程看到修改后的结果呢？这就是volatile在起作用
    private static boolean running = true;

    public static void main(String[] args) {

        Thread thread = new Thread(() -> {
            while (running) {
                // 只要running为true，就执行一些操作
                // System.out.println("Thread is running...");

                // try {
                //     Thread.sleep(1000); // 模拟工作负载，休眠1秒
                // } catch (InterruptedException e) {
                //     Thread.currentThread().interrupt();
                // }
            }
            System.out.println("Thread has stopped!");
        });

        thread.start();

        try {
            Thread.sleep(100); // 主线程休眠5秒
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }

        // 主线程唤醒工作线程，并安全地退出循环
        running = false;
        System.out.println("Main thread sets running to false.");
    }
}


